您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

一种文件处理方法和系统

  • 申请号:CN201110361123.4 申请公布号: CN102541991B
  • 申请日: 2011-11-14 申请公布日: 2014-12-24
  • 申请(专利权)人: 专利代理机构: 广州华进联合专利商标代理有限公司
  • 分类号:G06F17/30

专利介绍

本发明公开了一种文件处理方法,包括:获取两个文件中数据的长度;如果数据长度不相同,则执行两个文件内容不相同所对应的处理操作;如果数据长度相同,则以预设分组长度为分组单位,将两个文件的内容划分为若干数据组;在两个文件中的相同位置,分别获取预设数目个数据组;对获取的数据组进行比较,如果有位置相同的数据组其数据内容不同,则执行两个文件内容不相同所对应的处理操作,否则,执行两个文件内容相同所对应的处理操作。此外,还公开了一种文件处理系统,包括文件长度获取模块、数据组划分模块、数据组获取模块、数据组比较模块和处理操作执行模块。本发明文件处理方法和系统,具有效率高、准确率高和灵活性强的优点。
1.一种文件处理方法,其特征在于,包括以下步骤:获取两个文件中数据的长度;如果两个文件中数据的长度不相同,则执行两个文件内容不相同所对应的处理操作;如果两个文件中数据的长度相同,则以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;在两个文件中的相同位置,通过以下步骤,各获取预设数目个数据组:在所述划分的数据组的数目范围内随机选取一个整数随机数x;选取所述整数随机数x后,搜索随机数存储数组,其中,所述随机数存储数组是用来保存已选取的随机数x数值的数组,如果所述随机数存储数组中已存在与选取的随机数x相同的数值,则重新随机选取随机数x;如果所述随机数存储数组中不存在与选取的随机数x相同的数值,则将选取的随机数x的数值添加到随机数存储数组中;在选取完随机数x后,将指向文件的指针置于两个文件中的第x个数据组的起始位置,分别获取两个文件中相同位置上对应于所选取随机数x的数据组;重新选取随机数并分别获取两个文件中相同位置上对应于所重新选取的随机数的数据组,直到在两个文件中的相同位置上分别获取到预设数目个数据组;其中,所述预设数目小于所述划分的数据组的数目;对获取的两个文件中位置相同的数据组进行比较,如果有位置相同的数据组其数据内容不同,则执行两个文件内容不相同所对应的处理操作,否则,执行两个文件内容相同所对应的处理操作。
2.如权利要求1所述的文件处理方法,其特征在于,在所述获取两个文件中数据的长度的步骤中,包括以下步骤:打开两个文件;返回指向文件的指针;将指向文件的指针置于两个文件最后的位置;分别获取两个文件中数据的长度。
3.如权利要求1所述的文件处理方法,其特征在于,在所述将两个文件的内容划分为若干数据组的步骤中,采取了将两个文件的内容等分为若干数据组的方法。
4.如权利要求1所述的文件处理方法,其特征在于,在所述将两个文件的内容划分为若干数据组的步骤中,所述预设分组长度是用户设定的,并且所述预设分组长度小于所述文件中数据的长度。
5.如权利要求1所述的文件处理方法,其特征在于,在所述获取预设数目个数据组的步骤中,当获取到与已获取的数据组重复的数据组时,需重新获取数据组。
6.如权利要求1所述的文件处理方法,其特征在于,在所述对获取的两个文件中位置相同的数据组进行比较的步骤中,采取了逐字节顺序比较的方法。
7.一种文件处理系统,其特征在于,包括文件长度获取模块、数据组划分模块、数据组获取模块、数据组比较模块和处理操作执行模块;所述文件长度获取模块,用于获取两个文件中数据的长度并进行比较;所述数据组划分模块,用于在两个文件中数据的长度相同时,以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;所述数据组获取模块,用于在两个文件中的相同位置分别获取预设数目个数据组;所述数据组获取模块,用于在所述划分的数据组的数目范围内随机选取一个整数随机数x;选取所述整数随机数x后,搜索随机数存储数组,其中,所述随机数存储数组是用来保存已选取的随机数x数值的数组,如果所述随机数存储数组中已存在与选取的随机数x相同的数值,则重新随机选取随机数x;如果所述随机数存储数组中不存在与选取的随机数x相同的数值,则将选取的随机数x的数值添加到随机数存储数组中;在选取完随机数x后,将指向文件的指针置于两个文件中的第x个数据组的起始位置,分别获取两个文件中相同位置上对应于所选取随机数x的数据组;重新选取随机数并分别获取两个文件中相同位置上对应于所重新选取的随机数的数据组,直到所述数据组获取模块在两个文件中的相同位置上分别获取到预设数目个数据组;其中,所述预设数目小于所述划分的数据组的数目;所述数据组比较模块,用于对获取的两个文件中位置相同的数据组进行比较;所述处理操作执行模块,用于执行两个文件内容相同或者不相同时所对应的处理操作。技术领域
本发明涉及文件处理技术领域,尤其涉及一种文件处理方法和一种文件处理系统。
背景技术
现有的根据两个文件内容是否相同来执行处理操作的方法多数为采用“逐字节(位)顺序比较法”来进行文件内容的比较,即将两个文件的内容读取出来,然后顺序地对其字节(位)进行逐个比较,如果有一个字节(位)不同,则两个文件的内容不同,执行两个文件内容不相同所对应的处理操作。如果所有的字节(位)均相同,则两个文件的内容相同,并执行两个文件内容相同所对应的处理操作。“逐字节(位)顺序比较法”虽然准确率高,但是算法效率非常低下、耗费时间长,特别是如果两个内容相同的文件具有海量数据的话,例如文件大于1G,那么在执行处理操作之前对两个文件内容是否相同进行比较将需要花费非常大量的时间。
发明内容
为解决上述存在的问题,本发明公开了一种文件处理方法和系统,在比较拥有大量甚至是海量数据的两个文件其内容是否相同,并根据两个文件内容是否相同来执行相应操作时更具优势。一种文件处理方法,包括以下步骤:获取两个文件中数据的长度;如果两个文件中数据的长度不相同,则执行两个文件内容不相同所对应的处理操作;如果两个文件中数据的长度相同,则以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;在两个文件中的相同位置,通过以下步骤,各获取预设数目个数据组:在所述划分的数据组的数目范围内随机选取一个整数随机数x;选取所述整数随机数x后,搜索随机数存储数组,其中,所述随机数存储数组是用来保存已选取的随机数x数值的数组,如果所述随机数存储数组中已存在与选取的随机数x相同的数值,则重新随机选取随机数x;如果所述随机数存储数组中不存在与选取的随机数x相同的数值,则将选取的随机数x的数值添加到随机数存储数组中;在选取完随机数x后,将指向文件的指针置于两个文件中的第x个数据组的起始位置,分别获取两个文件中相同位置上对应于所选取随机数x的数据组;重新选取随机数并分别获取两个文件中相同位置上对应于所重新选取的随机数的数据组,直到在两个文件中的相同位置上分别获取到预设数目个数据组;其中,所述预设数目小于所述划分的数据组的数目;对获取的两个文件中位置相同的数据组进行比较,如果有位置相同的数据组其数据内容不同,则执行两个文件内容不相同所对应的处理操作,否则,执行两个文件内容相同所对应的处理操作。与现有技术相比,特别是与现有文件处理方法中采用的“逐字节(位)顺序比较法”相比,本发明所提供的文件处理方法具有以下优点:第一,快速,特别是对两个具有海量数据并且文件内容相类似的文件执行处理操作时,由于对两个文件的比较速度大幅提高,因此效率远远大于采用“逐字节顺序比较法”的现有文件处理方法;第二,准确率高、灵活性强,通过数学计算,本发明的文件处理方法在保证了高效率的前提下准确率很高,并且由于预设分组长度和进行比较的数据组数目由用户来设定,因此可根据实际环境,对不同的比较参数进行灵活设置以同时满足高效率和高准确率的要求。一种文件处理系统,包括文件长度获取模块、数据组划分模块、数据组获取模块、数据组比较模块和处理操作执行模块;所述文件长度获取模块,用于获取两个文件中数据的长度并进行比较;所述数据组划分模块,用于在两个文件中数据的长度相同时,以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;所述数据组获取模块,用于在两个文件中的相同位置分别获取预设数目个数据组;所述数据组获取模块,用于在所述划分的数据组的数目范围内随机选取一个整数随机数x;选取所述整数随机数x后,搜索随机数存储数组,其中,所述随机数存储数组是用来保存已选取的随机数x数值的数组,如果所述随机数存储数组中已存在与选取的随机数x相同的数值,则重新随机选取随机数x;如果所述随机数存储数组中不存在与选取的随机数x相同的数值,则将选取的随机数x的数值添加到随机数存储数组中;在选取完随机数x后,将指向文件的指针置于两个文件中的第x个数据组的起始位置,分别获取两个文件中相同位置上对应于所选取随机数x的数据组;重新选取随机数并分别获取两个文件中相同位置上对应于所重新选取的随机数的数据组,直到所述数据组获取模块在两个文件中的相同位置上分别获取到预设数目个数据组;其中,所述预设数目小于所述划分的数据组的数目;所述数据组比较模块,用于对获取的两个文件中位置相同的数据组进行比较;所述处理操作执行模块,用于执行两个文件内容相同或者不相同时所对应的处理操作。与现有技术相比,特别是与现有文件处理系统中采用的“逐字节(位)顺序比较法”相比,本发明所提供的文件处理系统具有快速、准确率高和灵活性强的优点,尤其适用于对具有海量数据的两个文件的内容进行比较,并根据两个文件内容是否相同来执行处理操作。
附图说明
图1是本发明文件处理方法的示意流程图;图2是实施例在复制操作中使用本发明文件处理方法的示意流程图;图3是本发明文件处理系统的结构示意图。
具体实施方式
为更进一步阐述本发明所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本发明所提出的文件处理方法和系统的技术方案,进行清楚和完整的描述。请参阅图1,本发明文件处理方法的示意流程图。本发明文件处理方法包括以下步骤:S101获取两个文件中数据的长度;S102如果两个文件中数据的长度不相同,则执行两个文件内容不相同所对应的处理操作;S103如果两个文件中数据的长度相同,则以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;S104在两个文件中的相同位置,分别获取预设数目个数据组;S105对获取的两个文件中位置相同的数据组进行比较,如果有位置相同的数据组其数据内容不同,则执行两个文件内容不相同所对应的处理操作,否则,执行两个文件内容相同所对应的处理操作。本发明所提供的文件处理方法具有以下优点:第一,快速,特别是对两个具有海量数据并且文件内容相类似的文件执行处理操作时,由于对两个文件的比较速度大幅提高,因此效率远远大于采用“逐字节顺序比较法”的现有文件处理方法;第二,准确率高、灵活性强,通过数学计算,本发明的文件处理方法在保证了高效率的前提下准确率很高,并且由于预设分组长度和进行比较的数据组数目由用户来设定,因此可根据实际环境,对不同的比较参数进行灵活设置以同时满足高效率和高准确率的要求。当需要复制一个或多个文件到一个文件目录下时,如果发现当前文件目录下已经存在相同文件名的文件,那么可以使用本发明所提供的文件处理方法对两个文件名相同的文件进行比较,如果两个文件内容相同,不执行复制操作,如果文件内容不同,则重新命名新的目的文件名再执行复制操作。优选的,以上述在复制操作中出现相同文件名文件的情况作为具体实施例,对本发明所提供的文件处理方法做更具体的描述。S101获取两个文件中数据的长度;获取被复制文件(又称源文件)的完整路径与文件名,确定存放源文件的目的文件目录。检索目的文件目录中是否存在与源文件同名的文件,如果不存在,则将源文件复制到目的文件目录中。如果在目的文件目录中存在与源文件同名的文件(又称目的文件),则打开同文件名的源文件与目的文件,返回指向文件的指针,将指针置于这两个文件的最后位置,分别获取两个文件中数据的长度。S102如果两个文件中数据的长度不相同,则执行两个文件内容不相同所对应的处理操作;如果源文件与目的文件中数据的长度不相同,那么同文件名的源文件与目的文件的内容不相同,则重新命名新的目的文件名再将源文件复制到目的文件目录。S103如果两个文件中数据的长度相同,则以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;如果源文件与目的文件中数据的长度相同,则对文件进行分组。由用户设定预设分组长度n,预设分组长度n大于0并且小于源文件和目的文件中数据的长度,按照文件中数据的位置,可将源文件和目的文件的内容被划分为N个数据组。优选的,按照文件中数据的前后位置,将源文件和目的文件的内容等分为N个数据组,这样在对两个文件内容进行比较时可提高效率。S104在两个文件中的相同位置,分别获取预设数目个数据组;在0至N的数值范围内随机选取一个整数随机数x,即x为大于0并且小于或者等于N的整数。选取随机数x后,搜索随机数存储数组RandData,其中,随机数存储数组RandData是用来保存已选取的随机数x数值的数组。如果随机数存储数组RandData中已经存在与选取的随机数x相同的数值,则重新随机选取随机数x;如果随机数存储数组RandData中不存在与随机数x相同的数值,则将随机数x的数值存储到随机数存储数组RandData中。在选取随机数x完后,将指向文件的指针置于源文件和目的文件中的第x个数据组的起始位置,分别读取源文件和目的文件中相同位置上对应于所选取随机数x的数据组的数据,并保存到二维数组Data中,Data[0][n]存储从源文件数据组中读取的内容,Data[1][n]存储从目的文件数据组中读取的内容。由上述可知,本发明中获取数据组的方式是随机的。在每次获取到一个随机数x,进而获取到源文件和目标文件中对应位置上的数据组之后,执行步骤S105。S105对获取的两个文件中位置相同的数据组进行比较,如果有位置相同的数据组其数据内容不同,则执行两个文件内容不相同所对应的处理操作,否则,执行两个文件内容相同所对应的处理操作。在步骤S104分别从源文件和目标文件中相同位置上获取到一个数据组并保存到二维数组Data中之后,采用逐字节顺序比较的方法,比较Data[0][n]和Data[1][n]中分别保存的数据内容是否完全相同,也即分别比较从源文件和目的文件中获取的数据组的内容是否完全相同,并记录对Data[0][n]和Data[1][n]进行比较的次数Count。如果Data[0][n]和Data[1][n]中的内容不同,则同文件名的源文件与目的文件的内容不相同。如果Data[0][n]和Data[1][n]中的内容相同,再对数组比较次数Count与获取数据组的个数,也即预设数目m进行比较,如果数组比较次数Count小于预设数目m,则重复执行步骤S104;如果数组比较次数Count大于或者等于预设数目m,则两个文件内容相同。其中,所述预设数目m是由用户设定的,并且预设数目m小于步骤S103中所划分的数据组的数目。文件内容比较结束后,关闭源文件和目的文件。返回文件内容比较结果,若两个文件内容相同,则不执行复制操作,若文件内容不同,则重新命名新的目的文件名再将源文件复制到目的文件目录。由上述步骤S104和S105的描述可知,本实施例中从源文件和目的文件中分别获取到的预设数目m个数据组是不重复的,当获取到与已获取的数据组重复的数据组时,需重新获取数据组。并且,对获取到的各个不同位置上的源文件和目的文件中的数据组,采取了逐个位置进行比较的方法。请参阅图2,是实施例在复制操作中使用本发明文件处理方法的示意流程图。对上述在复制操作中出现相同文件名文件时,使用本发明所提供的文件处理方法做了更直观地描述。本发明所提供的文件处理方法,使用了统计学里随机抽样中的“等距随机抽样法”,在随机抽样比较的基础上兼有顺序比较的特点,用于比较大量甚至海量数据的文件时,更为方便,具有效率高、准确率高和灵活性强的优点。优选的,以上述在复制操作中出现相同文件名文件的情况作为具体实施例,对本发明所提供的文件处理系统做更具体的描述。请参阅图3,本发明文件处理系统的结构示意图。本发明文件处理系统包括文件长度获取模块301、数据组划分模块302、数据组获取模块303、数据组比较模块304和处理操作执行模块305;所述文件长度获取模块301,用于获取两个文件中数据的长度并进行比较;打开同文件名的源文件与目的文件,返回指向文件的指针,将指针置于这两个文件的最后位置,所述文件长度获取模块301分别获取两个文件中数据的长度。如果源文件与目的文件中数据的长度不相同,那么同文件名的源文件与目的文件的内容不相同。所述数据组划分模块302,用于在两个文件中数据的长度相同时,以预设分组长度为分组单位,按照文件中数据的位置,将两个文件的内容划分为若干数据组;如果源文件与目的文件中数据的长度相同,则所述数据组划分模块302对文件进行分组。由用户设定预设分组长度n,预设分组长度n大于0并且小于源文件和目的文件中数据的长度,按照文件中数据的位置,优选的,将源文件和目的文件的内容等分为N个数据组,这样在对两个文件内容进行比较时可提高效率。所述数据组获取模块303,用于在两个文件中的相同位置分别获取预设数目个数据组;所述数据组获取模块303在0至N的数值范围内随机选取一个整数随机数x,即x为大于0并且小于或者等于N的整数。选取随机数x后,搜索随机数存储数组RandData,如果数组RandData中已经存在与随机数x相同的数值,则所述数据组获取模块303重新随机选取随机数x;如果数组RandData中不存在与随机数x相同的数值,则所述数据组获取模块303将随机数x的数值存储到随机数存储数组RandData中。所述数据组获取模块303在选取随机数x完后,将指向文件的指针置于源文件和目的文件中的第x个数据组的起始位置,分别读取源文件和目的文件中相同位置上对应于所选取随机数x的数据组的数据,并保存到二维数组Data中。所述数据组获取模块303重新选取随机数x并分别获取源文件和目的文件中相同位置上对应于所重新选取的随机数x的数据组,直到在源文件和目的文件中的相同位置上分别获取到预设数目m个数据组。所述数据组比较模块304,用于对获取的两个文件中位置相同的数据组进行比较;从源文件和目标文件中相同位置上获取到一个数据组并保存到二维数组Data中之后,所述数据组比较模块304采用逐字节顺序比较的方法,分别比较从源文件和目的文件中获取的数据组的内容是否完全相同,并记录对Data[0][n]和Data[1][n]进行比较的次数Count。如果Data[0][n]和Data[1][n]中的内容不同,则同文件名的源文件与目的文件的内容不相同。如果Data[0][n]和Data[1][n]中的内容相同,所述数据组比较模块304再对数组比较次数Count与获取数据组的个数,也即预设数目m进行比较,如果数组比较次数Count小于预设数目m,则所述数据组获取模块303重新选取随机数x并分别获取源文件和目的文件中相同位置上对应于所重新选取的随机数x的数据组,所述数据组比较模块304按上述步骤对重新获取的数据组进行重新比较。如果重新比较后,Data[0][n]和Data[1][n]中的内容相同,并且数组比较次数Count大于或者等于预设数目m,则同文件名的源文件与目的文件的内容相同。所述处理操作执行模块305,用于执行两个文件内容相同或者不相同时所对应的处理操作。根据返回的源文件和目的文件内容比较的结果,若两个文件内容相同,则所述处理操作执行模块305不执行复制操作,若两个文件内容不同,则所述处理操作执行模块305重新命名新的目的文件名再将源文件复制到目的文件目录。本发明所提供的文件处理系统具有快速、准确率高和灵活性强的优点,尤其适用于对具有海量数据的两个文件的内容进行比较,并根据两个文件内容是否相同来执行处理操作。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。